1. Field of the Invention
The present invention relates to a data communication method and a data communication system which can realize communication under TCP/IP protocol having a good communication efficiency in application environments such as mobile computing and remote access, in which the throughput for access link from a terminal equipment bottlenecks the throughput in end—end communication.
2. Description of the Prior Art
In recent years, Internet has spread as a network for performing data communication between terminal equipment such as computers. Moreover, an application mode called mobile computing or remote access has spread together.
In the mobile computing and the remote access, as a user's terminal equipment used is an information processor provided with a communication apparatus which can realize communication with radio telephone lines such as a cellular phone and cable telephone lines such as ISDN. Moreover, in the application mode, the data communication is performed with a server terminal equipment via an interconnecting installation (hereinafter referred to as the router) called an access server or an access router which is connected to the user's terminal equipment via the radio telephone line or the cable telephone line. Additionally, the line connected to the user's terminal equipment is referred to as the access link, and the communication between the user's terminal equipment and the server terminal equipment is referred to as the end—end communication. In the mobile computing or the remote access, the communication speed of the access link is usually slow, and the throughput of the access link bottlenecks the throughput of the end—end communication in many cases.
The Internet is an aggregate of networks in which local area networks (LAN) connected to a plurality of terminal equipments via packet communication media such as Ethernet are interconnected via the packet interconnecting installation as the router.
On the terminal equipment or the router connected to Internet, a program for performing operation according to a path control protocol called Internet Protocol (IP) is mounted, so that the packet communication between arbitrary terminal equipments connected to different LAN can be realized by IP.
Additionally, when an error occurs in a part of the data during the transmission of the packet via the communication media, or when the router is not provided with a sufficient packet storage area, the received packet is discarded, so that packet loss occurs during communication. Moreover, when a series of packet is transmitted from the arbitrary terminal equipment to the terminal equipment connected to the different LAN, transmission order differs from arrival order in the packet receiving terminal equipment in which the packet arrival order is not guaranteed.
The Internet performs the data communication having reliability even against the packet loss or order replacement, and has a function for extracting the transmitted data exactly in transmission order on a reception side without missing any data.
The data communication having a high reliability is realized by the communication protocol which is called transmission control protocol (TCP).
The TCP and IP have originally been developed by assuming the data communication between the terminal equipments connected to cable LAN, but are usually utilized even in the mobile computing or the remote access at present.
A conventional data communication system in which the TCP/IP protocol (hereinafter simply referred to as TCP/IP) is used will next be described with reference to FIGS. 32 to 37. This is more specifically described in various Requests for Comment (RFC) issued by the U.S. Internet Engineering Task Force (IETF). Additionally, the most important matter on TCP is described in RFC 793 (Transmission Control Protocol), and the most important matter on IP is described in RFC 791 (Internet Protocol: IP). Moreover, specification changes or detailed specifications of RFC 793 and RFC 791 are described in RFC 1122 (Requirements for Internet Hosts-Communication Layer).
FIG. 32 is a block diagram showing one constitution example of the data communication system which uses conventional TCP/IP. FIG. 33 is a diagram showing the constitution of the information transmitted/received in the data communication system shown in FIG. 32, and is a block diagram showing a header positional relation. FIG. 34 is a block diagram showing the constitution of TCP header shown in FIG. 33, and FIG. 35 is a block diagram showing the constitution of IP header shown in FIG. 33. Moreover, FIG. 36 is a sequence diagram showing the procedure during connection opening of the conventional data communication system shown in FIG. 32, and FIG. 37 is a sequence diagram showing the procedure during connection close of the conventional data communication system shown in FIG. 32.
The data communication system using the conventional TCP/IP shown in FIG. 32 is constituted of a terminal equipment 6, a router 7, a server terminal equipment 8, a radio network 9, and Internet 10. The terminal equipment 6 and the router 7 are connected via the radio network 9 such as a radio telephone line, and the router 7 and the server terminal equipment 8 are connected via the Internet 10.
The terminal equipment 6 is, for example, an information processor provided with apparatuses connectable to the radio network 9, and is provided with a first processor 61, a first communication interface controller 62, a first TCP module 63, a first IP module 64, a first PPP module 65, and a first radio line access unit 66.
The router 7 is an information processor provided with apparatuses connectable to the radio network 9 and Ethernet interface connectable to the Internet 10, and has a second IP module 71, a second PPP module 72, a second radio line access unit 73, and a first Ethernet module 73.
The server terminal equipment 8 is an information processor provided with Ethernet interface connectable to the Internet 10, and has a second processor 81, a second communication interface controller 82, a second TCP module 83, a third IP module 84, and a second Ethernet module 85.
The radio network 9 is a telephone network constituted of a radio line. Moreover, the Internet 10 is a complex of Ethernet LAN or LAN connected via the router.
The first processor 61 and the second processor 81 carry out a processing according to an application program for performing communication. With the application program the data is mutually exchanged to present a communication service to a user.
The application program is a known program such as file transfer protocol (ftp) and TELNET, or is prepared individually by the user for use. Additionally, the desired data communicated between the first processor 61 and the second processor 81 will be referred to as the application data hereinafter.
In FIG. 33, the application data is divided into a plurality of sub-application data constituted of a predetermined data amount transmittable with the packet (divided into first to third sub-application data in FIG. 33), various headers constituted of addresses indicating transmission destinations and control information are applied to the sub-application data and the data are transmitted (the header applied in each module will be described later). Additionally, in FIG. 33, PPP trailer, or Ethernet trailer is data indicating the last of the packet.
The first processor 61 performs the communication with the second processor 81 via an access point presented by the first communication interface controller 62.
When the application data is transmitted to the second processor 81 from the first processor 61, the first processor 61 transfers the application data to the first communication interface controller 62 and requires data transmission. Moreover, when the first processor 61 receives the application data transmitted from the second processor 81, the first processor 61 makes a request to the first communication interface controller 62 for data reception, so that the received application data is transferred.
Similarly, the second processor 81 performs the communication with the first processor 61 via an access point presented by the second communication interface controller 82.
When the application data is transmitted to the first processor 61 from the second processor 81, the second processor 81 transfers the application data to the second communication interface controller 82 and requires the data transmission. Moreover, when the second processor 81 receives the application data transmitted from the first processor 61, the second processor 81 makes a request to the second communication interface controller 82 for data reception, so that the received application data is transferred.
The first communication interface controller 62 and the second communication interface controller 82 manage the above-described access points, and additionally utilize functions owned by the first TCP module 63 and the second TCP module 83 to execute specific processings according to the requests from the first processor 61 and the second processor 81. Additionally, the access point is presented with a concept called “socket” at present.
The “socket” will next be described in an example for use in the first communication interface controller 62. Additionally, since an example for use in the second communication interface controller 82 is similar, the description thereof is omitted.
The socket is identified in accordance with an identifier called a port for identifying a self address and application program. Moreover, the socket forms an access point to a virtual channel called connection to realize the data communication. Additionally, the connection is appropriately generated, or deleted in the communication interface controller to perform the communication.
When the application data communication is performed between the first processor 61 and the second processor 81, the connection is opened between the first processor 61 and the second processor 81, and the application data is transmitted via the connection. Moreover, after the application data connection closes, the connection is also closed. Therefore, the socket has a connection control function and a data communication function.
The connection control function includes a connection active opening function of designating a self socket and a communication object socket to actively open the connection, a connection passive opening point generating function of converting the self socket to a socket (passive socket) for receiving a connection active opening request from other communication terminal point, a connection passive opening function for waiting for the connection opening by the passive socket, and a connection close function of closing the opened connection.
Moreover, the data communication function includes a data transmission function of transmitting the application data to the communication object socket via the opened connection, and a data reception function of extracting the data transmitted from the communication object socket via the opened connection.
The above-described function is realized by the first TCP module 63, and the first communication interface controller 62 replaces the communication request from the first processor 61 with function calling of the first TCP module 63, and additionally manages the correlation between the socket and the connection.
Moreover, the first communication interface controller 62 temporarily holds the application data transferred from the first processor 61 (a storage area for storing the application data is referred to as a transmission data buffer), and temporarily holds the received application data until the data is extracted by the first processor 61 (the storage area for storing the application data is referred to as a reception data buffer).
The first processor 61 identifies the connection for use in the communication with the socket by establishing a one-to-one correspondence between the socket and the connection terminal point by the first communication interface controller 62. Moreover, when the first communication interface controller 62 requests data transfer and designates the socket identifier, the first TCP module 63 identifies the corresponding connection. Specifically, in Free BSD 2.2.6-RELEASE as one type of UNIX operating system, the connection active opening request, connection passive opening point generation request, connection passive opening request, and connection break request are realized with system call functions of connect, listen, accept, and shutdown. Moreover, the data transmission request is realized with a system call function of send or write, and the data reception request is realized with a system call function of receive or read.
The first TCP module 63 and the second TCP module 83 are transport layer protocol modules for realizing the TCP protocol control, that is, the connection control and data communication.
A TCP module function will be described hereinafter in the example of the first TCP module 63. The function and operation of the second TCP module 83 are similar to those of the first TCP module 63.
The first TCP module 63 has an order control function of re-arranging the received application data in transmitted order, a data communication guarantee function of performing a re-sending processing when the packet is lost, and a flow control function with the second TCP module 83.
On receiving the application data from the first communication interface controller 62, the first TCP module 63 generates the TCP segment and transfers the segment to the first IP module 64. The TCP segment is constituted only of the TCP header shown in FIG. 34, or of the TCP header and application data. Additionally, the TCP header is added to the top of the sub-application data as shown in FIG. 33.
Moreover, on receiving the TCP segment from the first IP module 64, the first TCP module 63 identifies the corresponding connection from the included TCP header, and performs TCP protocol control.
The first IP module 64, second IP module 71, and third IP module 84 are network layer protocol modules to perform IP protocol control. Each IP module applies IP address for identification to a low-order network interface for accessing the network beforehand. Moreover, in a path table the IP module has, the network interface to which the IP data gram corresponding to the IP address is to be transmitted is recorded.
Specifically, the first IP module 64 applies the IP address to the first PPP module 65, the second IP module 71 applies IP addresses to the second PPP module 72 and first Ethernet module 74, and the third IP module 84 applies the IP address to the second Ethernet module 85. Additionally, the IP address applied to the first PPP module 65 is referred to as the IP address of the terminal equipment 6, and the IP address applied to the second PPP module 72 or the first Ethernet module 74 is referred to as the IP address of the router 7. Moreover, the IP address applied to the second Ethernet module 85 is referred to as the IP address of the server terminal equipment 8.
In the path table the first IP module 64 has, the first PPP module 65 is designated as the network interface addressed to the server terminal equipment 8, and in the path table the third IP module 84 has, the second Ethernet module 85 is designated as the network interface addressed to the terminal equipment 6. Moreover, in the path table the second IP module 71 has, the second PPP module 72 is designated as the network interface addressed to the terminal equipment 6, and the first Ethernet module 74 is designated as the network interface addressed to the server terminal equipment 8.
On receiving the TCP segment from the first TCP module 63, the first IP module 64 generates the IP data gram from the TCP segment, and transfers it to the first PPP module 65.
The IP data gram is constituted of the IP header and TCP segment shown in FIG. 35. Additionally, the IP header is added to the top of the TCP segment as shown in FIG. 33.
On receiving the IP data gram from the first PPP module 65, the first IP module 64 judges from the IP header included in the IP data gram whether or not the IP data gram is addressed to the terminal equipment 6. When the received IP data gram is for the terminal equipment 6, the TCP segment is extracted from the IP data gram, and transferred to the first TCP module 63. Moreover, when the IP data gram is not for the terminal equipment 6, the IP data gram is transmitted to the network interface corresponding to the address of the IP data gram by referring to the path control table.
It is judged whether or not the IP data gram is addressed to the terminal equipment 6 by judging whether or not the transmission destination IP address in the IP header is equal to the IP address allotted to the first PPP module 65.
On receiving the IP data gram for the terminal equipment 6 from the first Ethernet module 74, the second IP module 71 transfers the IP data gram to the second PPP module 72. Moreover, on receiving the IP data gram for the server terminal equipment 8 from the second PPP module 72, the IP data gram is transferred to the second Ethernet module 74. Additionally, since the function and operation of the third IP module 84 are similar to those of the first IP module 64, the description thereof is omitted.
The first PPP module 65 and the second PPP module 72 are data link protocol processing modules to execute a point to point protocol (PPP) processing therebetween.
The first PPP module 65 generates a PPP frame from the IP data gram received from the first IP module 64, and transmits the PPP frame to the radio network 9 via the first radio line access unit 66. Moreover, on receiving the PPP frame via the first radio line access unit 66, the IP data gram is extracted from the PPP frame, and the extracted IP data gram is transferred to the first IP module 64.
Similarly, the second PPP module 72 generates the PPP frame from the IP data gram received from the second IP module 71, and transmits the PPP frame to the radio network 9 via the second radio line access unit 73. Moreover, on receiving the PPP frame via the second radio line access unit 73, the IP data gram is extracted from the PPP frame, and the extracted IP data gram is transferred to the second IP module 71.
The first radio line access unit 66 and the second radio line access unit 73 access the radio network 9 to control the connection and disconnection with the radio network 9, or the data communication.
The first Ethernet module 74 and the second Ethernet module 85 have Ethernet interface apparatuses, and are processing modules to transmit/receive the data via Ethernet. Additionally, each Ethernet interface apparatus is provided beforehand with a univocal identifier (referred to as the Ethernet address) in the entire Internet.
On receiving the IP data gram for the server terminal equipment 8 from the second IP module 71, the first Ethernet module 74 generates an Ethernet frame for the second Ethernet module 85 from the IP data gram, and transmits the frame to the Internet 10. Moreover, on receiving the Ethernet frame for the first Ethernet module 74 from the Internet 10, the presence/absence of a data error in the Ethernet frame is checked. When there is no data error, the IP data gram is extracted from the Ethernet frame, and the extracted IP data gram is transferred to the second IP module 71. Moreover, when there is a data error, the Ethernet frame is discarded.
On the other hand, on receiving the IP data gram for the terminal equipment 6 from the third IP module 84, the second Ethernet module 85 generates the Ethernet frame for the first Ethernet module 74 from the IP data gram, and transmits the frame to the Internet 10. Moreover, on receiving the Ethernet frame for the second Ethernet module 85 from the Internet 10, the presence/absence of the data error in the Ethernet frame is checked. When there is no data error, the IP data gram is extracted from the Ethernet frame, and the extracted IP data gram is transferred to the third IP module 84. Moreover, when there is a data error, the Ethernet frame is discarded.
The module operations during the connection control and data communication of the conventional data communication system shown in FIG. 32 will next be described.
The connection control function and the data communication function are realized by the first TCP module 63 and the second TCP module 83, and the lower-order module simply has a function of transferring the IP data gram to the transmission destination apparatus.
Additionally, the following operations are started when the operation request for each function is sent to the first communication interface controller 62 from the first processor 61, or when the operation request for each function is sent to the second communication interface controller 82 from the second processor 81.
(1) Transmission Operation of TCP Segment:
First, the transmission operation of the TCP segment will be described in an example in which the TCP segment is transmitted to the second TCP module 83 from the first TCP module 63. Additionally, the first IP module 64 and the third IP module 84, the first PPP module 65 and the second PPP module 72, the first radio line access unit 66 and the second radio line access unit 73, and the first Ethernet module 74 and the second Ethernet module 85 operate mutually symmetrically. Therefore, when the TCP segment is transmitted to the first TCP module 63 from the second TCP module 83, the operation described below is replaced.
First, on receiving the TCP segment for the server terminal equipment 8 from the first TCP module 63, the first IP module 64 generates the IP data gram from the received TCP segment, and transfers the TCP segment to the first PPP module 65. The IP data gram is constituted of IP header and received TCP segment. As shown in FIG. 35, the IP address of the terminal equipment 6 is stored in a transmission source IP address field (Source IP address) of the IP header, the IP address of the server terminal equipment 8 is stored in a transmission destination IP address field (Destination IP address), and a value for identifying the TCP is stored in a protocol field (Protocol).
On receiving the IP data gram from the first IP module 64, the first PPP module 65 generates the PPP frame from the received IP data gram, and transfers the PPP frame to the first radio line access unit 66. A frame check sequence for detecting the data error is added to the PPP frame. The PPP frame transferred to the first radio line access unit 66 is transferred to the second PPP module 72 via the radio network 9 and the second radio line access unit 73.
On receiving the PPP frame, the second PPP module 72 calculates the frame check sequence, and checks the presence/absence of the data error in the PPP frame. When there is no data error, the IP data gram is extracted from the PPP frame, and the extracted IP data gram is transferred to the second IP module 71.
On receiving the IP data gram, the second IP module 71 checks the value of the destination IP address field of the IP header. Here, since the IP address of the server terminal equipment 8 is stored in the destination IP address field, the IP data gram is transferred to the first Ethernet module 74.
The IP data gram transferred to the first Ethernet module 74 is transferred to the third IP module 84 via the Internet 10 and the second Ethernet module 85.
On receiving the IP data gram, the third IP module 84 checks the value of the destination IP address field in the IP header. Here, since the IP address of the server terminal equipment 8 is stored in the destination IP address field, it is recognized that the IP data gram is addressed to the server terminal equipment 8. Moreover, since the value of the protocol field in the IP header is a TCP identifier value, the TCP segment is extracted from the IP data gram, and the extracted TCP segment is transferred to the second TCP module 83.
(2) TCP Basic Operation:
The basic operation common to the TCP modules, and a method of utilizing the TCP header in the TCP segment will next be described.
As described above, the connection is set between two sockets in the TCP, and the TCP segment is transmitted/received between the two sockets of each connection. Therefore, the information for identifying the corresponding connection is necessary for all the TCP segments.
The correspondence of the TCP segment and the connection is identified by storing the socket port number of the source in a source port number field (Source port number) in the TCP header of the TCP segment, and storing the socket port number of the destination in a destination port number field (Destination port number). Moreover, the correspondence is identified by storing the IP address of the source socket in the source IP address field (Source IP address) in the IP header of the IP data gram, and storing the IP address of the destination socket in the destination IP address field (Destination IP address).
Specifically, when the IP address of one socket S1 of the arbitrary connection is set to A1, its port number is P1, the IP address of the other socket S2 is A2, its port number is P2, the TCP module of the apparatus with the socket S1 present therein is TCP module M1, and the TCP module of the apparatus with the socket S2 present therein is TCP module M2, and when the TCP segment is transmitted to the TCP module M2 from the TCP module M1, the TCP module M1 generates the TCP segment in which P1 is stored in the source port number field in the TCP header and P2 is stored in the destination port number field. Furthermore, the IP module generates the IP data gram in which A1 is stored in the source IP address field in the IP header and A2 is stored in the destination IP address field.
The TCP module M2 having received the IP data gram including the TCP segment judges from the value P1 of the source port number field in the TCP header, value P2 of the destination port number field in the TCP header, value A1 of the source IP address field in the IP header, and value A2 of the destination IP address field in the IP header that the received TCP segment corresponds to the connection constituted of a pair of sockets S1 and S2.
Moreover, the TCP also handles the loss of the TCP segment by the transmission acknowledgment function and re-sending function.
In the transmission acknowledgment function of the TCP segment, the sequence number field (Sequence number) of the TCP header of the TCP segment to be transmitted, acknowledgment flag field (A) of the TCP header of the TCP segment returned from the reception side and acknowledgment number field (Acknowledgment number) are used.
When the application data or the control information is transmitted to the TCP module M2 from the TCP module M1, the TCP module M1 applies the number to the application data received from the processor for each connection by one byte unit in order (this number is referred to as the sequence number). When the TCP segment is transmitted to the TCP module M2, the sequence number of top sub-application data is stored in the sequence number field of the TCP header.
The TCP module M2 judges the position of the received sub-application data from the top from the value of the sequence number field of the TCP header of the received TCP segment, and the size of the sub-application data included in the TCP segment.
The TCP module M2 records the history of the sequence number of the received sub-application data for each connection, and judges from the history whether the received sub-application data is already received data or newly received data.
Moreover, on receiving the new sub-application data, the TCP module M2 stores the value obtained by adding 1 to the sequence number of the last received sub-application data (the sequence number of non-received sub-application data first appearing as seen from the top) to the acknowledgment number field of the TCP header. Furthermore, the TCP segment with the acknowledgment flag field set to “set” is returned to the TCP module M1.
When the acknowledgment flag field of the TCP header is set to “set”, the TCP module M1 can know success in transmission up to the sub-application data of sequence number X−1 by referring to the value (set to X) of the acknowledgment number field. Such transmission acknowledgment method is referred to as accumulation acknowledgment method.
Moreover, the TCP module M1 starts a re-sending timer during the transmission of the TCP segment. When the transmission acknowledgment of the transmitted TCP segment can be made until the expire of the re-sending timer, the corresponding re-sending timer is stopped, and the transmission processing of the TCP segment is completed. When the re-sending timer is expired without notification of the TCP segment transmission acknowledgment, it is judged that the TCP segment transmission has failed, and the sub-application data transmission is restarted from the top of the sub-application data to be transmitted with the TCP segment.
The transmission acknowledgment function and re-sending function of the TCP module have been described above in the example of the transmission operation of the TCP segment including the application data, but also when the TCP segment including no application data and transmitting control information (e.g., the TCP segment of the connection opening request) is transmitted, the similar processing is executed by assuming that the sub-application data is included in the TCP segment.
Furthermore, the conventional data communication system is provided with a flow control function of notifying the empty capacity of a received data buffer to the TCP module on the transmission side from the TCP module on the reception side to control the transmission discontinuation, or transmission resuming of the TCP segment by the TCP module on the transmission side. The empty capacity of the received data buffer is stored in a widow size field (Window size) of the TCP header of the TCP segment to be transmitted.
On receiving the TCP segment from the TCP module M1, the TCP module M2 refers to the window size field of the TCP header. In this case, when the value of the window size field is zero, the application data transmission is discontinued. When the value of the window size field is not zero, the sub-application data, in which the value of the window size field is an upper limit size, is transmitted.
(3) Connection Opening Operation (Connection Active Opening, Connection Passive Opening Point Generation, Connection Passive Opening):
The connection opening operation of the conventional data communication system will next be described with reference to FIG. 36.
When the connection is opened to the second processor 81 from the first processor 61, first the second processor 81 generates a socket (S2) for data communication, and applies a predetermined port number (P2) to the socket. Subsequently, the second communication interface controller 82 is requested to generate a connection passive opening point, the socket S2 is changed to a passive socket, connection passive opening is requested and the second processor 81 itself is allowed to wait for the connection opening by the socket S2.
When the second communication interface controller 82 is requested to generate the connection passive opening point for the socket S2 and perform the connection passive opening, the apparatus notifies this to the second TCP module 83. The second TCP module 83 allows the socket S2 to wait for the connection passive opening.
On the other hand, the first processor 61 generates a socket (S1) for data communication, designates the IP address and port number P2 of the server terminal equipment 8 through the socket S1, and requests the first communication interface controller 62 to perform the connection active opening to the socket S2.
When the connection active opening to the socket S2 is requested, the first communication interface controller 62 records the relation of the sockets S1 and S2, and makes a request to the first TCP module 63 for the connection active opening to the socket S2.
On receiving the request for the connection active opening to the socket S2, the first TCP module 63 generates the initial value (X1) of the sequence number. When there is no designation of the port number to the socket S1 at this point of time, the unused port number is set to the port number (P1) of the socket S1.
Furthermore, the first TCP module 63 generates TCP segment A1 for requesting the connection opening, and transfers the generated TCP segment A1 to the second TCP module 83. The TCP segment A1 is constituted only of the TCP header, P1 is stored in the source port number field of the TCP header, P2 is stored in the destination port number field, and X1 is stored in the sequence number field. Moreover, a synchronization flag field (S) is set to “set”.
On receiving the TCP segment A1 from the first TCP module 63, the second TCP module 83 confirms the value (P2) of the destination port number field of the TCP header included in the TCP segment A1, and the synchronization flag field (“set”), and judges that there is a request for connection to the socket S2.
Since the socket S2 waits for the connection passive opening, the second TCP module 83 generates the initial value (X2) of the sequence number, generates TCP segment A2 for notifying the transmission acknowledgment of the TCP segment A1 and for requesting the connection opening and transfers the segment to the first TCP module 63.
The TCP segment A2 is constituted only of the TCP header, P2 is stored in the source port number field of the TCP header, P1 is stored in the destination port number field, and X2 is stored in the sequence number field. Moreover, the synchronization flag field and the acknowledgment flag field are both set to “set”, and X1+1 is stored in the acknowledgment number field.
On receiving the TCP segment A2 from the second TCP module 83, the first TCP module 63 confirms the value (P1) of the destination port number field of the TCP header of the TCP segment A2, the synchronization flag field (“set”), the acknowledgment flag field (“set”), and the value (X1+1) of the acknowledgment number field, and judges that the received TCP segment A2 notifies the transmission acknowledgment of the TCP segment A1, and that the request for connection opening is made by the second TCP module 83.
Subsequently, the first TCP module 63 transfers TCP segment A3 for notifying the transmission acknowledgment of the TCP segment A2 to the second TCP module 83. The TCP segment A3 is constituted only of the TCP header, P1 is stored in the source port number field of the TCP header, P2 is stored in the destination port number field, X1 is stored in the sequence number field, the synchronization flag field and the acknowledgment flag field are both set to “set”, and X2+1 is stored in the acknowledgment number field.
On receiving the TCP segment A3 from the first TCP module 63, the second TCP module 83 confirms the value (P2) of the destination port number field of the TCP header included in the TCP segment A3, the acknowledgment flag field (“set”), and the value (X2+1) of the acknowledgment number field, and judges that the TCP segment A3 notifies the transmission acknowledgment of the TCP segment A2, and that the connection opening is confirmed with the first TCP module 63.
The second TCP module 83 further duplicates a connection terminal point having the same port number, and notifies the second communication interface controller 82 of the connection terminal point and the connection passive opening completion.
With the notification of the connection opening, the second communication interface controller 82 generates a new socket (socket S3) to the connection terminal point, and notifies the second processor 81 of the socket S3 and the connection passive opening completion.
In this case, the connection is opened between the socket S1 and the socket S3, and the second processor 81 has access to the connection including not only the socket S2 but also the socket S3. Moreover, the socket S2 is returned to the state of waiting for the connection passive opening. The duplicating operation of the socket S2 is a processing performed so that the data communication can simultaneously be performed with a plurality of apparatuses. Since the socket S2 waits for the connection passive opening, the connection opening requests from the other apparatuses can be handled.
(4) Connection End Operation:
The connection close operation of the conventional data communication system will next be described with reference to FIG. 37.
In the TCP, the end processing is performed in each direction in which the TCP segment is transmitted, and the connection close processing is completed at the time the end processing is completed. The connection close processing is executed in response to a request for the end processing from the processor as the transmission source.
The connection close operation to the second processor 81 from the first processor 61 is started in response to the connection close request which is sent to the first communication interface controller 62 from the first processor 61.
On receiving the connection close request, the first communication interface controller 62 notifies the first TCP module 63 of the socket identifier and the connection close request. On receiving the connection close request, the first TCP module 63 generates a TCP segment B1 for ending the connection to the socket, and transfers the TCP segment B1 to the second TCP module 83. For the TCP segment B1, in addition to the setting of each field of the usual TCP header, an end flag field (F) is set to “set”.
On receiving the TCP segment B1 from the first TCP module 63, the second TCP module 83 confirms the end flag field (“set”) of the TCP header included in the TCP segment B1, and judges that the TCP segment B1 indicates the connection close request.
Subsequently, the second TCP module 83 generates a TCP segment B2 for notifying the transmission acknowledgment of the TCP segment B1, and transfers the TCP segment B2 to the first TCP module 63.
On receiving the TCP segment B2, the first TCP module 63 confirms the transmission acknowledgment of the TCP segment B1, and completes the connection close operation to the second processor 81 from the first processor 61.
Additionally, the connection close operation to the first processor 61 from the second processor 81 is similarly performed by replacing the operation subject of the connection close operation to the second processor 81 from the first processor 61.
(5) Data Transmission/Reception Operation (Data Transmission Function, Data Reception Function):
The data transmission/reception operation of the conventional data communication system will next be described in an example in which the application data is transmitted to the second processor 81 from the first processor 61 through the connection constituted of the socket S1 of the terminal equipment 6 and the socket S2 of the server terminal equipment 8.
First, when the first processor 61 transfers the application data and the data transmission request to the first communication interface controller 62 through the socket S2, the first communication interface controller 62 stores the application data in a transmission data buffer corresponding to the socket S2, and sends the data transmission request to the first TCP module 63.
The first TCP module 63 cuts the sub-application data for a maximum segment size (MSS) out of the top of the transmission data buffer, applies the TCP header to the top of the cut sub-application data and generates the TCP segment, and transmits the segment to the second TCP module 83.
The above-described processing is repeated until the application data in the transmission data buffer is eliminated, the size of the application data without the transmission acknowledgment reaches the transmission window size, or until the flow control is executed by the notification of shortage of the received data buffer empty capacity from the second TCP module 83.
The MSS is a value obtained by subtracting the TCP header size and IP header size from a maximum transfer unit (MTU) which can be transmitted by the low-order network interface at once. In the above-described example, since the MTU of the PPP module is 1500 bytes, and the size of each of the TCP header and the IP header is 20 bytes, the MSS becomes 1460 bytes.
On receiving the TCP segment, the second TCP module 83 identifies the corresponding connection from the value of the source port number field and the value of the destination port number field in the TCP header, and transfers the received application data to the second communication interface controller 82 as the received data corresponding to the socket S2.
The second communication interface controller 82 stores the received application data in the received data buffer corresponding to the socket S2. The application data stored in the received data buffer is transferred to the second processor 81 in response to the data reception request to the second communication interface controller 82.
Additionally, in the conventional data communication system, for the loss of the TCP segment and the change of the arrival order which are caused during the transmission/reception of the application data, or the duplicated arrival of the TCP segment, reliable data transfer is realized by the following processing.
As described above, the transmission acknowledgment of the transmitted TCP segment is mutually performed between the first TCP module 63 and the second TCP module 83. When the TCP segment is received, the context of each sub-application data can be known from the value of the sequence number field of the TCP header.
When the second TCP module 83 receives the sub-application data subsequent to the already received sub-application data, the sub-application data is transferred to the second communication interface controller 82 as it is. Moreover, when the sub-application data after some data is received instead of the subsequent sub-application data, the sub-application data is temporarily held together with the sequence number. Subsequently, when the sub-application data for filling the interval is received, the sub-application data is transferred to the second communication interface controller 82 together with the held data. Additionally, when the already received sub-application data is resent, the sub-application data is discarded. The order control and duplication control are performed in this manner.
Moreover, the first TCP module 63 detects the loss of the TCP segment by the re-sending timer, and the loss of the TCP segment is recovered by re-sending the TCP segment with the expired re-sending timer.
In the data communication system shown in FIG. 32, a round trip time (RTT) from the transmission of the TCP segment until the return of the TCP segment including the transmission acknowledgment usually changes with the fluctuation of the processing load in the router 7. Therefore, when the timeout value of the re-sending timer is fixed, the processing load of the router fluctuates. When the value of RTT becomes larger than the fixed value, wasteful re-sending occurs. Moreover, when the fixed value is set to a larger value, much time is required for detecting the loss of the TCP segment.
On the other hand, in the data communication system using the conventional TCP/IP, the transmission acknowledgment procedure on and after the connection opening comprises measuring RTT between the TCP modules, and again setting the timeout value of the re-sending timer from the average value of RTT and its dispersion average based on the measured value. Thereby, the timeout value of the re-sending timer is set to an optimum value which dynamically corresponds to the change of RTT.
Moreover, in the data communication system using the TCP/IP, when the conventional TCP segment loss is detected by assuming the TCP segment loss as the discard of the TCP segment by router congestion, the TCP module once lowers the projection speed of the TCP segment to reduce the router processing load, and subsequently increases the speed gradually, which is a technique called slow start. Specifically, the TCP module sets a congestion window in addition to a transmission window for normal transmission flow control, and sets a smaller value of the transmission and congestion windows as the window size for the transmission.
On detecting the TCP segment loss, the TCP module sets the size of the congestion window to one MSS and re-sends the TCP segment. Thereafter, every time a new transmission acknowledgment is notified, the size of the congestion window is increased by MSS, and the congestion window size exceeds the half of the original transmission window size. Then, every time the transmission acknowledgment of the sub-application data for the congestion window size is notified, the congestion window size is increased by MSS.
By performing this processing, the router processing load having caused the congestion is reduced, the congestion is eliminated, and the router is prevented from being again placed in the congested state by the re-sending.
Moreover, the data communication system using the conventional TCP/IP is further provided with a push request function of instantly transmitting the application data transferred to the communication interface controller in response to the data transmission request to the reception-side processor without accumulating the data in the transmission-side transmission data buffer, transmission-side TCP module, or reception-side TCP module during the transmission of the application data.
In TCP specification, a timing at which the transmission-side TCP module having received the data transmission request extracts and transmits the application data from the transmission data buffer, or a timing at which the reception-side TCP module transfers the received application data to the processor is not defined. Therefore, even when the data transmission request is received, a processing comprising not transmitting the application data stored in the transmission data buffer until the size exceeds a predetermined size, a processing comprising not transferring to the processor even the received application data having no loss and being able to be transferred to the processor until the size exceeds the predetermined size, and the like can be performed.
The push request is a function of allowing the transmission-side TCP module to instantly transmit the application data stored in the transmission data buffer, and allowing the reception-side TCP module to transfer to the processor all the application data that can be transferred to the processor among the received application data.
The notification of the push request transmitted to the reception-side TCP module from the transmission-side TCP module is realized by using a push flag field (P) in the TCP header. The push flag field is set to either “set” or “non-set”. However, many of the existing communication interface controllers are not provided with interfaces for accepting the push request to the processor. In this case, no explicit push request is notified even to the TCP module, but during the transmission of the application data to empty the transmission data buffer, the value of the push flag field of the TCP header of the TCP segment including the application data is set to “set”.
Moreover, the TCP has a data transmission mode called an urgent mode separately from the usual data transmission. The urgent mode is realized by inserting data called urgent data into a series of application data string transmitted from one TCP module M1. In this case, the other TCP module M2 identifies the urgent data inserted in the series of application data string received from the TCP module M1, and notifies the processor via the communication interface controller that the urgent has been received. However, the processing of the received urgent data is not defined (relies on the reception side).
The notification of the urgent mode is performed by a TCP segment unit, and an urgent flag field (U) and urgent data pointer field (Urgent pointer) of the TCP header are used. The urgent flag field is set to either “set” or “non-set”. When the field is “set”, the TCP segment includes the urgent data, and it is indicated that the urgent data pointer field is used. The urgent data pointer field is used only when the urgent flag field is “set”, and its value indicates an offset value to the last one byte of the urgent data from the top of the application data included in the TCP segment.
Additionally, in the data communication system, it is preferable not only to enhance the throughput (value obtained by dividing the size of the application data to be transferred by “transfer time”), but also to enhance the utilization efficiency of communication resources (communication efficiency). When the limited communication resource is utilized to process a plurality of data communication requests, and when the communication efficiency is high, the throughput of the entire data communication is accordingly enhanced.
However, in order to utilize the Internet for the communication of the application data, the control by the protocol such as TCP and IP is necessary, the application data is divided to data groups (sub-application data) in which the MSS is an upper limit, the data is converted to a packet with TCP header and IP header applied to each sub-application data, and the communication is performed through the network. Furthermore, when the packet is lost before reaching the reception-side TCP module, the application data included in the lost packet is again packeted and transmitted by the control of the transmission-side TCP module. In this manner, for the communication of the target application data, the size of the data to be transmitted becomes larger than the size of the application data.
One scale for measuring the communication efficiency of the application data is a ratio of “the total amount of data sizes to be actually transmitted” to “the size of the application data”. The smaller the ratio is, the higher the communication efficiency becomes.
In the end—end communication, the entire throughput can be enhanced by enhancing the communication efficiency of the link which bottlenecks the throughput. When this concept is applied to the mobile computing or the remote access, the throughput of the access link (line presented by the radio network 9. This is a telephone line in a remote access environment) usually bottlenecks the throughput of the end—end communication. Therefore, the enhancing of the communication efficiency of the access link is effective for enhancing the throughput of the end—end communication.
In order to enhance the communication efficiency of the access link, it is proposed to reduce the sizes of the TCP header and IP header, reduce the data size to be transmitted for recovering the packet loss, introduce the flow control and to optimize the communication data amount required for the control.
One example of the data communication system to enhance the communication efficiency is described in RFC 1144 of the U.S. IETF. In the data communication system described in this document, in apparatuses at both ends of the telephone line in the remote access environment, the communication efficiency of the application data is enhanced by reducing redundant information included in each header of the TCP/IP packet. This technique is usually called VJ header compression. In the apparatuses (corresponding to the terminal equipment 6 and the router 7 in FIG. 32) at both terminal points connected via the telephone line, first all fields of each header of the TCP/IP packet are transmitted to the other apparatus from one apparatus, and subsequently the size of each header is compressed in the following technique. Specifically, a new local connection identifier is newly set to identify the connection corresponding to the TCP/IP packet to be transmitted, and the information of the connection identifier is stored in the header of the packet to be transmitted. Subsequently, the four fields which have been utilized to identify the connection (the source port number field of the TCP header, the destination port number field, the source address field of the IP header, and the destination IP address field) are deleted. Moreover, for the other fields of each header of the TCP/IP packet, the field whose content is not changed until the connection close is deleted. For the field whose content is changed, a difference between the value of the field with the changed content and the value of the previously transferred field is transmitted. Additionally, when the packet is lost, the TCP/IP packet including all the headers is transmitted, thereby synchronizing both states.
By the above-described technique, the redundant information is reduced, and the transfer efficiency of the application data is enhanced.
In the above-described conventional data communication method, however, the following problems are caused.
A first problem is that the communication efficiency in the access link is largely deteriorated by the overhead of the TCP header and IP header.
This is because a redundant field or redundant information exists in each header field in the data communication system using the conventional TCP/IP.
Examples of the redundant field include the urgent data flag field of the TCP header, the urgent data pointer field, and the like. These fields are used only during the transport of the urgent data, but are included in the TCP header also during the transport of the usual application data.
Moreover, during connection control, the sequence number field or the acknowledgment number field in the TCP header as the field for data communication control, and the window size field are also redundant fields.
Furthermore, examples of the redundant information include the sequence number. Each of the sequence number field and the acknowledgment number field is constituted of four bytes, and is used to identify the application data included in the TCP segment, or the application data whose accumulated transmission is to be acknowledged. However, four bytes are not necessarily required for identifying the application data.
Additionally, the size able to be held in the received data buffer to realize the flow control is stored in the window size field of the TCP header for use in the flow control. However, while the flow control is unnecessary, that is, while a sufficient storage capacity is present in the received data buffer, the size able to be held in the received data buffer does not need to be reported to the transmission side.
Moreover, during the connection control, the source port number and destination port number in the TCP header, the source IP address in the IP header and the destination IP address are also redundant information. These are used to identify the connection, but when limiting to a certain link terminal interval, these information do not need to be always incorporated in the header.
Moreover, after the connection is established, the version number field (Ver.) and protocol field of the IP header do not change until the connection closes. Therefore, the fields are unnecessary after the connection is established.
Additionally, in the VJ header compression, with respect to the sequence number information and acknowledgment number information, the data size is compressed by sending a difference of the sequence number and acknowledgment number transmitted before, but the data size for sending these information depends on the magnitude of the difference value. When the value of 1 to 255 is transmitted, one byte is sufficient. When the value of 256 to 65534 is transmitted, however, three bytes are necessary.
Moreover, for the window size information, the data size is compressed by transmitting the difference from the previously transmitted window size, but the difference has to be transmitted every time the window size to be notified changes. Furthermore, when the packet loss occurs, the packet transmitted immediately after the loss needs to include all the fields of the TCP header and IP header. Therefore, when the occurrence frequency of the packet loss increases, the effect of the header compression lowers.
Particularly, during the connection opening and during the connection close, since nothing is executed in the VJ header compression technique, all the fields of the TCP header and IP header need to be transmitted.
A second problem is that when the packet is lost, the influence of the communication efficiency deteriorated by the packet re-sending is exerted on other section, and the communication efficiency of the other section is deteriorated.
The reason is that in the data communication system using the conventional TCP/IP, since the re-sending because of the packet loss is performed in an end—end manner, the resent packet is transmitted in both an access link section and other sections.
A third problem is that when the re-sending is performed because of the packet loss in the access link section, the throughput is lowered by the TCP congestion control.
The reason is that in the data communication system using the conventional TCP/IP, when the packet loss is detected, the transmission-side TCP module suppresses transmission traffic by slow start to solve the congestion. However, since the packet loss in the access link has no relation to the congestion in the network, the packet transmission suppression by the slow start has no effect, and the throughput is lowered by suppressing the traffic.
A fourth problem is that the transfer efficiency is deteriorated by delay increase or more with respect to the delay increase of packet transfer in the access link.
The reason is that in the data communication system using the conventional TCP/IP, the timeout value of the re-sending timer utilized during the transmission acknowledgment is set based on the RTT value till then, but assuming that delay fluctuation depends on the congested state (processing load state) of the router in the network. Specifically, the RTT fluctuation correlates with the past RTT fluctuation history. When the router processing load increases, the RTT also increases on average. When the router processing load decreases, the RTT also decreases on average.
However, when the cause for delay increase in the access link has no relation to the congestion, the delay fluctuation property is different from the property presumed in the above-described TCP. Therefore, the fluctuation property has no relation to the past RTT fluctuation history. This causes the incorrect detection of the packet loss and the subsequent wasteful re-sending processing, the unnecessary packet transmission suppression by the application of slow start, and the like.
For example, a radio line is used in the access link, and the packet error control is performed by re-sending with the data link protocols at both ends of the access link. In this case, when a packet error occurs by radio line quality deterioration such as phasing, the error control is performed by re-sending with the data link protocol. Therefore, the packet transfer delay increases when seen from the TCP. However, the fluctuation property of the delay is different from that of the congestion, and depends on the occurrence timing of a bit error by phasing. Therefore, delay time depends on the occurrence degree of the bit error and the error control system in the data link protocol.
A fifth problem is that when the packet is lost in the access link, the time dependent on the RTT till then is required for detecting the packet loss. Therefore, the detection time of the packet loss increases more than necessary, and the throughput is lowered.
The detection of the packet loss in the TCP requires time from when the packet is transmitted until the re-sending timer times out. The timeout time depends on the RTT value till then, and has a larger value than the RTT average value. For example, when the application data is transferred in a burst manner, and when the packet is lost in the access link, the packet loss can be detected in a shorter time than the time for RTT on the reception side of the access link, but the packet cannot be resent until the re-sending timer times out. Therefore, even when the transmission of the TCP segment for the transmission window size is completed until the timeout of the re-sending time, the communication efficiency is deteriorated. Because the application data transmission is stopped from when the last TCP segment transmission is completed until the re-sending timer times out.
A sixth problem is that when the packet re-sending is performed, even the packet having succeeded in transmission is sometimes resent, and the communication efficiency is deteriorated more than necessary.
The reason is that the transmission acknowledgment in the TCP is performed by the above-described accumulation acknowledgment method, but in this method, the sequence number of the first appearing non-received application data is notified among the application data transmitted from the transmission-side TCP module. Therefore, the transmission-side TCP module cannot know the reception situation on and after the non-received application data.
Moreover, when the re-sending timer times out in the transmission-side TCP module, the transmission-side TCP module basically retransmits the application data on and after the corresponding TCP segment, and the application data having succeeded in transmission is also resent. It is wasteful to re-send the application data which has succeeded in transmission.